﻿using System;
using System.Collections;

namespace SlimBonsai.Entities
{
    /// <summary>
    /// Descripción breve de Elemento.
    /// </summary>
    public class Elemento
    {

        #region Atributos

        private string _Clase;
        private Hashtable _Atributos;

        #endregion

        #region Propiedades

        public string Clase
        {
            get
            {
                return this._Clase;
            }
            set
            {
                this._Clase = value;
            }
        }

        public Hashtable Atributos
        {
            get
            {
                return this._Atributos;
            }
            set
            {
                this._Atributos = value;
            }
        }

        #endregion

        #region Constructores

        public Elemento()
        {
            this.Clase = "Valor no definido";
            this.Atributos = new Hashtable();
        }

        public Elemento(string Clase)
        {
            this.Clase = Clase;
            this.Atributos = new Hashtable();
        }

        public Elemento(string Clase, Hashtable Atributos)
        {
            this.Clase = Clase;
            this.Atributos = Atributos;
        }

        #endregion

        #region Métodos

        public void AñadirAtributo(string Nombre, string Valor)
        {
            if (this.Atributos.ContainsKey(Nombre))
            {
                throw new SlimBonsaiEntitiesException("Ya existe un atributo con mismo nombre: " + Nombre);
            }
            else
            {
                this.Atributos.Add(Nombre, Valor);
            }
        }

        #endregion

    }
}
